package com.kuangstudy.service.zset;

import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.Random;

/**
 * @author 飞哥
 * @Title: 学相伴出品
 * @Description: 我们有一个学习网站：https://www.kuangstudy.com
 * @date 2021/6/7 14:54
 */
@Service
@Log4j2
public class WeiboxInitService {

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 先初始化一个月的历史数据
     */
    public void initData() {
        // 1: 计算当前的小时key
        long hour = System.currentTimeMillis() / (1000 * 60 * 60);
        // 2: 把近一个月的数据放入到zset中
        for (int i = 1; i <= 24 * 30; i++) {
            // 3: 为什么是hour-1 ,因为每个小时的key是一样的，多一个小时就是多1，倒推的话：当前小时减去1
            String key = "rank:hour:" + (hour - i);
            this.initBbsMember(key);
        }
    }

    /**
     * 初始化文章数据
     *
     * @param key
     */
    public void initBbsMember(String key) {
        Random random = new Random();
        // 采用26个字母来实现排行榜，随机为每个字母生成一个随机数作为score，注意：我这里只是用26个字母代替完整的数据
        // 在真实的开发中肯定是从数据库表吧文章对应的数据查询出来，在进行存储到zset中。
        for (int i = 1; i <= 26; i++) {
            this.redisTemplate.opsForZSet().add(key, String.valueOf((char) (96 + i)), random.nextInt(20));
        }
    }


}
